package com.tensquare.gathering.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * ------------------------------
 * 功能：
 * 作者：WF
 * 微信：hbxfwf13590332912
 * 创建时间：2021/8/28-15:17
 * ------------------------------
 */
//@Configuration
public class MyCorsConfig implements WebMvcConfigurer {

    //普通的微服务（非网关）一般使用的是servlet这种阻塞式的开发模式，使用如下这种方式：
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("*")
                .allowCredentials(true);
    }

    //网关层的跨域处理方式（响应式开发：gateway网关使用的是非阻塞的响应式开发，如果用zuul网关则用上面的方式）
    // @Bean
    // public CorsWebFilter corsWebFilter(){
    //
    //     UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    //     CorsConfiguration config = new CorsConfiguration();
    //     config.addAllowedOriginPattern("*");
    //     config.addAllowedMethod("*");
    //     config.addAllowedHeader("*");
    //     config.setAllowCredentials(true);
    //     source.registerCorsConfiguration("/**",config);
    //     CorsWebFilter webFilter = new CorsWebFilter(source);
    //     return webFilter;
    // }
}
